/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ModelLayer;

/**
 *
 * @author Martin
 */
import java.util.ArrayList;
public class Adressebog {

    private ArrayList<Person> personer;
    private static Adressebog instance = null;                
public Adressebog()
{
    personer = new ArrayList<Person>();
}
/** 
 * tilføjer et person objekt person til ArrayListen "personer" (Personens rolle er individuel og afhænger af AdressebogCtrl)
 * @param person
 */

public void tilfoejPerson(Person person)
{
    personer.add(person);
      
}
//-------------------------------------------
/**
 * lokaliserer en person i ArrayListen ud fra personen tlf nummer. returnerer person objektet.
 * @param tlf
 * @return 
 */
public Person findKunde(int tlf)
{
    Person person = null;
    int index = 0;
    boolean found = false;
    while(index < personer.size() && !found)
    {
        person = personer.get(index);
        if(person.getTlf() == tlf)
        {
            found = true;
            person = personer.get(index);
        }
        index++;
        }
    if(!found)
    {
        found = false;
    }
        return person;
    }
/**
 * opdaterer et personobjekts oplysninger. parametret tlf bruges til at lokalisere person objektet.
 * @param tlf
 * @param navn
 * @param adresse
 * @param newTlf
 * @param email 
 */
public void opdaterPerson(int newTlf, String navn, String adresse, int tlf, String email)
{
    Person person = null;
    int index = 0;
    boolean found = false;
    while(index < personer.size() && !found)
    {
        person = personer.get(index);
        if(person.getTlf() == newTlf)
        {
            found = true;
        }
        
        else{
            index++;
        }
        if(found = true){
        person.setNavn(navn);
        person.setAdresse(adresse);
        person.setTlf(tlf);
        person.setEmail(email);
    }
    }
}
/**
 * sletter et person objekt baseret på personens tlf nummer
 * @param tlf 
 */
public void sletPerson(int tlf)
{
    Person person = null;
    int index = 0;
    boolean found = false;
    while(index < personer.size() && !found)
    {
        person = personer.get(index);
        if(person.getTlf() == tlf)
        {
            found = true;
        }
        else{
            index++;
        }
    }
    if(found = true){
        personer.remove(index);
    }
}
/**
 * udskriver alle person objekter der indeholder en attribut kunde af typen Rolle
 */
public void udskrivKunder()
{
    Person person = null;
    int index = 0;
    while(index < personer.size()){
        person = personer.get(index);
        if(person.hentRolle("kunde") !=null){
        System.out.println("----------------------------------");
        System.out.println("Kunde navn: " + person.getNavn());
        System.out.println("Adresse: " + person.getAdresse());
        System.out.println("Tlf: " + person.getTlf());
        System.out.println("email: " + person.getEmail());
        System.out.println("Rolle : Kunde");
        System.out.println("----------------------------------");
        index++;
        } 
        else
{
    index++;
    }
}
}
/**
 * udskriver alle person objekter der indeholder en attribut medarbejder af typen Rolle
 */
public void udskrivMedarbejdere()
{
    Person person = null;
    int index = 0;
    while(index < personer.size()){
        person = personer.get(index);
        if(person.hentRolle("medarbejder") !=null){
        System.out.println("----------------------------------");
        System.out.println("Medarbejder navn: " + person.getNavn());
        System.out.println("Adresse: " + person.getAdresse());
        System.out.println("Tlf: " + person.getTlf());
        System.out.println("email: " + person.getEmail());
        System.out.println("Rolle : Medarbejder");
        System.out.println("----------------------------------");
        index++;
    }
        else
        {
            index++;
        }
    }
}
/**
 * udskriver alle person objekter der indeholder en attribut leder af typen Rolle
 */
public void udskrivLedere()
{
    Person person = null;
    int index = 0;
    while(index < personer.size()){
        person = personer.get(index);
        if(person.hentRolle("leder") !=null){
        System.out.println("----------------------------------");
        System.out.println("Lederens navn: " + person.getNavn());
        System.out.println("Adresse: " + person.getAdresse());
        System.out.println("Tlf: " + person.getTlf());
        System.out.println("email: " + person.getEmail());
        System.out.println("Rolle : Leder");
        System.out.println("----------------------------------");
        index++;
    }
        else
        {
            index++;
        }
}
}
/**
 * returnerer Adressebogs objektet som singleton
 */
public static Adressebog getInstance()
    {
        if(instance == null)
        {
            instance = new Adressebog();
        }
        return instance;
    }
}
